package analizadorLexico;

public class EstadoNoAceptacion implements Estado {
	boolean inicial;
	private String siguienteEstado;
	private Transicion[] transiciones;
	private String id;

	public EstadoNoAceptacion(String id, Transicion...transiciones){
		this.id = id;
		this.transiciones = transiciones;
		this.siguienteEstado = "q0";
		this.inicial = false;
	}
	
	public void ponInicial(boolean inicial){
		this.inicial = inicial;
	}

	@Override
	public String dameId() {
		return id;
	}

	@Override
	public Token dameToken(String lexema) {
		return null;
	}

	@Override
	public String dameSiguienteEstado() {
		return siguienteEstado;
	}

	@Override
	public int transita(char siguiente) throws Exception {
		for(Transicion t: transiciones){
			String caracteres = t.dameCaracteres();
			if((caracteres == null)||(caracteres.indexOf(siguiente)>-1)){
				siguienteEstado = t.dameSiguienteEstado();
				return 1;
			}
		}
		throw new Exception();
	}

	@Override
	public boolean estadoInicial() {
		return inicial;
	}

	@Override
	public boolean dameRetroceso() {
		return false;
	}
}
